package org.viettan.android.main;

import org.viettan.android.main.io.NetworkUtility;
import org.viettan.android.main.io.NetworkUtilityImpl;
import org.viettan.android.main.io.cache.CacheUtility;
import org.viettan.android.main.io.cache.CacheUtilityImpl;
import org.viettan.android.main.io.cache.ImageCacheManager;
import org.viettan.android.main.io.cache.ImageCacheManagerImpl;
import org.viettan.android.main.io.cache.WebCacheManager;
import org.viettan.android.main.io.cache.WebCacheManagerImpl;
import org.viettan.android.main.view.ArticleAdapterFactory;
import org.viettan.android.main.view.ArticleAdapterFactoryImpl;
import org.viettan.android.main.view.CampaignAdapterFactory;
import org.viettan.android.main.view.CampaignAdapterFactoryImpl;
import org.viettan.android.main.view.InfoLinkAdapterFactory;
import org.viettan.android.main.view.InfoLinkAdapterFactoryImpl;
import org.viettan.android.main.view.RadioEpisodeAdapterFactory;
import org.viettan.android.main.view.RadioEpisodeAdapterFactoryImpl;

import roboguice.config.AbstractAndroidModule;

/**
 * Main configuration module where all the dependency injections are defined.
 */
public class VietTanModule extends AbstractAndroidModule {

    @Override
    protected void configure() {
	bind(ArticleAdapterFactory.class).to(ArticleAdapterFactoryImpl.class);
	bind(CampaignAdapterFactory.class).to(CampaignAdapterFactoryImpl.class);
	bind(RadioEpisodeAdapterFactory.class).to(RadioEpisodeAdapterFactoryImpl.class);
	bind(InfoLinkAdapterFactory.class).to(InfoLinkAdapterFactoryImpl.class);
	bind(NetworkUtility.class).to(NetworkUtilityImpl.class);
	bind(CacheUtility.class).to(CacheUtilityImpl.class);
	bind(ImageCacheManager.class).to(ImageCacheManagerImpl.class);
	bind(WebCacheManager.class).to(WebCacheManagerImpl.class);
    }
}
